<?php

/*
 * File: register.php
 * Descrizione: Pagina di registrazione.
 * Check: OK.
*/

// Avvia una nuova sessione o riprende una sessione gi� creata
session_start();

// Include i file necessari
include('inc/config.inc.php');
include('inc/template.inc.php');
include('inc/db.inc.php');

// Recupera i dati in post
// Sintassi semplificata (Es. $variabile = (condizione)? se_condizione_vera : se condizione_falsa;)
$progress = (isset($_POST['progress']))? $_POST['progress'] : 0; // Variabile di controllo della fase
$email = (isset($_POST['email']))? $_POST['email'] : ""; // Email
$pass = (isset($_POST['pass']))? $_POST['pass'] : ""; // Password (Criptata tramite hash MD5)
$name = (isset($_POST['name']))? trim(ucfirst($_POST['name'])) : ""; // Nome dell'account
$options = '';

// Fase di registrazione (Valori ammessi: 0, 1, 2)
switch($progress) {
case 0: // Fase 1 - Immissione Dati (Inserimento dei dati)
	// Lista delle tag speciali
	$tags = array('temp_title' => $g_name, 'temp_progress' => 'Immissione Dati', 'temp_options' => $options, 'temp_aname' => $g_aname, 'temp_asurname' => $g_asurname, 'temp_aemail' => $g_aemail, 'temp_minage' => $g_minage);

	// Carica il template e formatta le tag speciali
	$temp = new template('style/register1.template.html');
	$temp->replace($tags);

	// Visualizza l'output
	echo $temp->show();

	break;

case 1: // Fase 2 - Conferma Dati (Conferma dei dati inseriti, la password viene criptata)
	// Se non sono stati riempiti tutti i campi lancia un errore
	if($email == "" || $pass == "" || $name == "") {
		// Lista delle tag speciali
		$tags = array('temp_title' => $g_name, 'temp_error' => '&Egrave; necessario riempire tutti i campi per continuare.');

		// Carica il template e formatta le tag speciali
		$temp = new template('style/error.template.html');
		$temp->replace($tags);

		// Visualizza l'output
		echo $temp->show();

		break;
	}
	if (strlen($name) < 3 || strlen($name) > 10){
		// Lista delle tag speciali
		$tags = array('temp_title' => $g_name, 'temp_error' => 'Formato del nome non corretto.');

		// Carica il template e formatta le tag speciali
		$temp = new template('style/error.template.html');
		$temp->replace($tags);

		// Visualizza l'output
		echo $temp->show();

		break;
	}
	if(!strpos($email,"@")){
		// Lista delle tag speciali
		$tags = array('temp_title' => $g_name, 'temp_error' => 'Email non valida.');

		// Carica il template e formatta le tag speciali
		$temp = new template('style/error.template.html');
		$temp->replace($tags);

		// Visualizza l'output
		echo $temp->show();

		break;
	}
	// Variabili
	$query1 = "SELECT account_id FROM accounts WHERE account_email = '$email' OR account_name = '$name'";

	// Controlla la presenza di utenti gi� registrati con l'indirizzo email inserito
	if($results1 = $db->query($query1)) {
		$count = $results1->num_rows;

		// Se non vi sono utenti gi� registrati con questa email prosegue
		if($count == 0) {
			// Variabili
			$pass_crypt = md5($pass);
			
			$security = '';
			$security .= mt_rand(0, 9);
			$security .= mt_rand(0, 9);
			$security .= mt_rand(0, 9);
			$security .= mt_rand(0, 9);
			$security .= mt_rand(0, 9);
			$securecode = $security;

			// Lista delle tag speciali
			$tags = array('temp_title' => $g_name, 'temp_progress' => 'Conferma Dati', 'temp_email' => $email, 'temp_pass' => $pass_crypt, 'temp_encpass' => $pass, 'temp_security' => $securecode, 'temp_name' => $name);

			// Carica il template e formatta le tag speciali
			$temp = new template('style/register2.template.html');
			$temp->replace($tags);

			// Visualizza l'output
			echo $temp->show();
		} else {
			// Lista delle tag speciali
			$tags = array('temp_title' => $g_name, 'temp_error' => 'L&apos;account risulta gi&agrave; registrato. Specificare indirizzo email o nome differente.');

			// Carica il template e formatta le tag speciali
			$temp = new template('style/error.template.html');
			$temp->replace($tags);

			// Visualizza l'output
			echo $temp->show();
		}

		$results1->close();
	}

	break;

case 2: // Fase 3 - Fine (Fase finale)
	// Variabili
	$secure = $_POST['security'];
	$encpass = $_POST['encpass'];
	$query = "INSERT INTO accounts (account_id, account_email, account_pass, account_lastpass, account_security, account_admin, account_master, account_name) VALUES(NULL, '$email', '$pass', NOW(), '$secure', '0', '0', '$name')";
	
	// Inserisce i dati nel database e controlla l'esito della query
	if($db->query($query) === TRUE) {

	//Crea la relativa voce nella tabella abilitieslink
	$activationlink = 'http://'.$_SERVER['HTTP_HOST'].'/activate.php?acc='.$email.'&sec='.$secure;
	
	$to=$email;
	$object='Registrazione a '.$g_name;
	$message='<br>La registrazione a '.$g_name.' &egrave; stata completata con successo, qui di seguito troverai i dati per accedere al tuo account: <br><br><strong>Nome:</strong> '.$name.' <br><strong>Password:</strong> '.$encpass.'<br><br> Il tuo link per l\'attivazione &egrave;:<br>'.$activationlink;
	$headers = "MIME-Version: 1.0\n";
	$headers .= "Content-type: text/html; charset=iso-8859-2\nContent-Transfer-Encoding: 8bit\nX-Priority: 1\nX-MSMail-Priority: High\n";
	mail($to, $object, $message, $headers);
		// Lista delle tag speciali
		$tags = array('temp_title' => $g_name, 'temp_progress' => 'Completa', 'temp_email' => $email);

		// Carica il template e formatta le tag speciali
		$temp = new template('style/register3.template.html');
		$temp->replace($tags);

		// Visualizza l'output
		echo $temp->show();
	} else {
		// Lista delle tag speciali
		$tags = array('temp_title' => $g_name, 'temp_error' => 'Si &egrave; verificato un errore durante l&aposaggiornamento del database.');

		// Carica il template e formatta le tag speciali
		$temp = new template('style/error.template.html');
		$temp->replace($tags);

		// Visualizza l'output
		echo $temp->show();
	}

	break;

default: // Errore (Se il valore � differente da quelli ammessi, viene generato un errore e terminato lo script)
	// Lista delle tag speciali
	$tags = array('temp_title' => $g_name, 'temp_error' => 'Si &egrave; verificato un errore imprevisto durante l&apos;esecuzione della pagina.');

	// Carica il template e formatta le tag speciali
	$temp = new template('style/error.template.html');
	$temp->replace($tags);

	// Visualizza l'output
	echo $temp->show();

	break;
}

// Chiude la connessione al database
$db->close();

?>